<template>
    <div class="table">
        <div class="divSearch">
            <Row>
            <!--搜索框-->
                <Col v-show="userinfo.AreaCode=='530000000000'"> 
                    <label class="searchLabel">所属地区:</label>
                    <!-- <Cascader :data="AreaList" change-on-select @on-change='SearchCascaderChange'  class="searchInput"></Cascader>-->
                    <Select v-model="searchModel.AreaCode"  placeholder="请选择..."  @on-change="AreaChange()" class="searchInput">
                        <Option :value="userinfo.AreaCode" v-if="userinfo.AreaCode=='530000000000'">全&nbsp;&nbsp;省</Option>
                        <Option :value="userinfo.AreaCode" v-else>全市/州</Option>
                        <Option :value="item.value" v-for="item in AreaList" :key="item.value">{{item.label}}</Option>
                    </Select>
                </Col>
                <Col v-show="searchModel.AreaCode=='530000000000'">
                    <label class="searchLabel">是否包含县（市、区）:</label>
                    <!-- <Cascader :data="AreaList" change-on-select @on-change='SearchCascaderChange'  class="searchInput"></Cascader>-->
                    <Select v-model="searchModel.IsCity"  @on-change="getStatsData()" class="searchInput">
                        <Option value="1">否</Option>
                        <Option value="2">是</Option>
                    </Select>
                </Col>
                <Col>
                    <label class="searchLabel">填报年度:</label>
                    <Select v-model="searchModel.FillInYear" placeholder="请选择..." :label-in-value="true" @on-change="getStatsData" clearable class="searchInput">
                        <Option :value="item.DictText" v-for="item in CreateYearList" :key="item.DictValue">{{item.DictText}}</Option>
                    </Select>
                </Col>
                <!-- <Col>
                    <label class="searchLabel">桑园用途:</label>
                    <Select v-model="Option"  placeholder="请选择..." :label-in-value="true" clearable class="searchInput" width="200" @on-change="GetData">
                        <Option :value="item.value" v-for="item in Options" :key="item.value">{{item.name}}</Option>
                    </Select>
                </Col> -->
                <Col >
                    <Button type="primary" @click="DataExport()"  class="searchRight" icon="log-out" >数据导出</Button>
                    <RadioGroup v-model="CheckButton" @on-change="changeButton" type="button" class="searchRight" >
                        <Radio label="listShow" title="列表"><span class="totalLable"><Icon type="ios-list-outline" size="10"></Icon>&nbsp;列表</span></Radio>
                        <Radio label="barShow" title="柱状图"><span class="totalLable"><Icon type="stats-bars" size="10"></Icon>&nbsp;柱状图</span></Radio>   
                        <Radio label="mapShow" title="地图"><span class="totalLable"><Icon type="map" size="10"></Icon>&nbsp;地图</span></Radio>                                                                               
                        <Radio label="timeShow" title="历年统计图"><span class="totalLable"><Icon type="ios-pulse-strong" size="10"></Icon>&nbsp;时间趋势图</span></Radio>                                                                               
                    </RadioGroup>
                </Col>
            </Row>
        </div>
        <Row  v-show="listShow">
            <!-- 列表-->
            <Col>
                <table class="ContentTable">
                    <caption>
                        <div><span class="tableNum">表1——{{searchModel.FillInYear}}{{userinfo.AreaCode|omgAreaName}}桑园面积调查表</span>
                            <span class="tip">单位：亩</span>
                        </div>
                    </caption>
                    <thead>
                        <tr>
                            <th style="width:50px;">序号</th>
                            <!-- <th style="width:72px;">年份</th> -->
                            <th style="width:100px;">县(市、区)</th>
                            <th>现有桑园面积</th>
                            <th>投产桑园面积</th>
                            <th>高产桑园面积</th>
                            <th>中产桑园面积</th>
                            <th>低产桑园面积</th>
                            <th>新栽桑面积</th>
                            <th>不用于养蚕的桑园面积</th>
                            <th>挖毁桑园面积</th>
                        </tr>
                        <tr v-if="datas.length>0">
                            <td style="width:50px;">1</td>
                            <!-- <td style="width:72px;">{{datas[0].FillYear}}</td> -->
                            <td style="width:100px;">{{datas[0].AreaName}}</td>
                            <td>{{datas[0].NowMulArea|decimal|formatCurrency}}</td>
                            <td>{{datas[0].IntoMulArea|decimal|formatCurrency}}</td>
                            <td>{{datas[0].HighMulArea|decimal|formatCurrency}}</td>
                            <td>{{datas[0].MidMulArea|decimal|formatCurrency}}</td>
                            <td>{{datas[0].LowMulArea|decimal|formatCurrency}}</td>
                            <td>{{datas[0].NewlyMulArea|decimal|formatCurrency}}</td>                            
                            <td>{{datas[0].NotUseMulArea|decimal|formatCurrency}}</td>
                            <td>{{datas[0].DestroyMulArea|decimal|formatCurrency}}</td>
                        </tr>
                    </thead>
                    <tbody  v-if="datas.length>0">
                        <!-- <tr v-for="(item,index) in datas"  v-show="index!==0" :key="item.AreaCode"  :class="{ red:AutoCity(item.AreaCode)}"> -->
                        <tr v-for="(item,index) in datas"  v-show="index!==0" :key="item.AreaCode"   :class="{ td1:index%2!=0,red:AutoCity(item.AreaCode)}">
                            <td style="width:50px;">{{index+1}}</td>
                            <!-- <td style="width:72px;">{{item.FillYear}}</td> -->
                            <td style="width:100px;">{{item.AreaName}}</td>
                            <td>{{item.NowMulArea|decimal|formatCurrency}}</td>
                            <td>{{item.IntoMulArea|decimal|formatCurrency}}</td>
                            <td>{{item.HighMulArea|decimal|formatCurrency}}</td>
                            <td>{{item.MidMulArea|decimal|formatCurrency}}</td>
                            <td>{{item.LowMulArea|decimal|formatCurrency}}</td>
                            <td>{{item.NewlyMulArea|decimal|formatCurrency}}</td>
                            <td>{{item.NotUseMulArea|decimal|formatCurrency}}</td>
                            <td>{{item.DestroyMulArea|decimal|formatCurrency}}</td>
                        </tr>
                    </tbody>
                </table>
            </Col>
        </Row>
        <Row v-show="barShow">
            <!--饼图-->
            <div  id="divBar">柱状图</div>
        </Row>
        <Row  v-show="mapShow">
            <!--地图展示-->
            <div id="divMap">地图</div>
        </Row>
        <Row  v-show="timeShow">
            <!--时间趋势图-->
            <div id="divTime">时间趋势图</div>
        </Row>
    </div>
</template>
<script>
export default {
    data() {
        return {
            CreateYearList: this.GetGroupDict("ReportYear"), //年度
            CurrentYear: this.GetCurrentYear(),//当前年度
            AreaList: this.SearchAreaList(this.GetlocaStorage("CSuserinfo").AreaCode),
            CurrentAreaName:'',
            userinfo: this.GetlocaStorage("CSuserinfo"),//获取当前用户信息
            CheckButton:'listShow',
            datas:[],//列表数据
            listTime:[],//时间轴数据
             //比较项目
            echartsItem:['现有桑园面积','投产桑园面积','新栽桑面积','高产桑园面积','中产桑园面积','低产桑园面积','不用于养蚕的桑园面积','挖毁桑园面积'],
            AreaData:[],
            //柱状图数据
            NowMulAreaData:[],
            IntoMulAreaData:[],
            HighMulAreaData:[],
            MidMulAreaData:[],
            LowMulAreaData:[],
            NewlyMulAreaData:[],
            NotUseMulAreaData:[],
            DestroyMulAreaData:[],
            barList:[],
            //地图数据
            mapList:[],
            mapType:'',//当前加载的地图模板
            MapNowMulAreaData:[],
            MapIntoMulAreaData:[],
            MapHighMulAreaData:[],
            MapMidMulAreaData:[],
            MapLowMulAreaData:[],
            MapNewlyMulAreaData:[],
            MapNotUseMulAreaData:[],
            MapDestroyMulAreaData:[],
            GeoData:'',//top值
            //查询模型：根据需求删除不不要查询条件
            searchModel: {
                Id: '',
                ReportCode: 'MulAreaStatist',
                FillInYear: '',
                TimesType: '',
                IsCity:"1",
                AreaCode: this.GetlocaStorage("CSuserinfo").AreaCode,
                PageNumber: 1,
                PageSize: 20,
                Status: '4',
                Opinion: ''
            },
            clientHeight: window.innerHeight - 240,//表格默认高度
            listShow:true,//列表显示控制器
            barShow:false,//饼图显示控制器
            mapShow:false,//地图显示控制器
            timeShow:false,//时间趋势图显示控制器
            XData:[]//时间轴
        }
    },
    //高度计算
     mounted() {
        //table高度计算方法
        const that = this;
        window.onresize = () => {
            return (() => {
                that.clientHeight = window.innerHeight - 240;
            })()
        };
    },
    //方法
    methods: {
        //展示切换
        changeButton:function(n){
            if(n=="listShow")
            {
                this.listShow=true;//显示列表
                this.barShow=false;
                this.mapShow=false;
                this.timeShow=false;
            }
            else if(n=="barShow")
            {
                this.listShow=false;
                this.barShow=true;//显示柱状图
                this.mapShow=false;
                this.timeShow=false;
            }
             else if(n=="mapShow")
            {
                this.listShow=false;
                this.barShow=false;//显示地图
                this.mapShow=true;
                this.timeShow=false;
            }
            else if(n=="timeShow")
            {
                this.listShow=false;
                this.barShow=false;//显示时间趋势图
                this.mapShow=false;
                this.timeShow=true;
                // this.getTimeTrendStats();
            }
            else{
                 this.listShow=true;//默认显示列表
                 this.barShow=false;
                 this.mapShow=false;
                 this.timeShow=false;
            }
        },
        AutoCity(AreaCode){
            var result=false;
            if(AreaCode!=null&&AreaCode!=""&&this.searchModel.IsCity=="2")
            {
                if(AreaCode.substr(4,2)=="00")
                {
                    result=true;
                }
            }
            return result;
        },
        DataExport(){
            //导出
           var self = this;
            var user = self.GetlocaStorage("CSuserinfo");
            if (self.searchModel.FillInYear != null && self.searchModel.FillInYear != '') {
                self.searchModel.FillInYear = self.searchModel.FillInYear;//获取当前系统年份
            } 
            else {
                self.searchModel.FillInYear = self.CurrentYear + '年'; //获取填报年度-----数据字典值
            }
            window.open(this.$http.defaults.baseURL + "MulAreaStatist/GetStatsExcelData?FillInYear=" + self.searchModel.FillInYear+"&&AreaCode=" + self.searchModel.AreaCode+"&&Status=" + self.searchModel.Status);
        },
        //获取地区统计数据
        getStatsData(){
            var self = this;
            var user = self.GetlocaStorage("CSuserinfo");
            if (self.searchModel.FillInYear != null && self.searchModel.FillInYear != '') {
                self.searchModel.FillInYear = self.searchModel.FillInYear;//获取当前系统年份
            } 
            else {
                self.searchModel.FillInYear = self.CurrentYear + '年'; //获取填报年度-----数据字典值
            }
            //柱状图数据
            self.AreaData=[],self.NowMulAreaData=[],
            self.IntoMulAreaData=[],self.HighMulAreaData=[],
            self.MidMulAreaData=[],self.LowMulAreaData=[],
            self.NewlyMulAreaData=[],self.NotUseMulAreaData=[],
            self.DestroyMulAreaData=[];
            self.barList=[],
            //地图数据
            self.mapList=[],
            self.MapNowMulAreaData=[],
            self.MapIntoMulAreaData=[],self.MapHighMulAreaData=[],
            self.MapMidMulAreaData=[],self.MapLowMulAreaData=[],
            self.MapNewlyMulAreaData=[],self.MapNotUseMulAreaData=[],
            self.MapDestroyMulAreaData=[];
            self.mapType=self.searchModel.AreaCode;
            self.GeoData=self.GetGeoData(self.mapType);
            self.$http.post('MulAreaStatist/PostStatsList', self.searchModel).then(function (res) {
                if (res.data.status === 1) {
                        self.datas=res.data.model;//列表赋值
                        self.CurrentAreaName=res.data.model[0].AreaName;//当前州(市)或者省
                        for(var i=1;i<res.data.model.length;i++)
                        {
                            //柱状图数据
                            self.AreaData.push(res.data.model[i].AreaName);
                            self.NowMulAreaData.push(res.data.model[i].NowMulArea);
                            self.IntoMulAreaData.push(res.data.model[i].IntoMulArea);
                            self.HighMulAreaData.push(res.data.model[i].HighMulArea);
                            self.MidMulAreaData.push(res.data.model[i].MidMulArea);
                            self.LowMulAreaData.push(res.data.model[i].LowMulArea);
                            self.NewlyMulAreaData.push(res.data.model[i].NewlyMulArea);
                            self.NotUseMulAreaData.push(res.data.model[i].NotUseMulArea);
                            self.DestroyMulAreaData.push(res.data.model[i].DestroyMulArea);
                            //地图数据
                            self.MapNowMulAreaData.push({'name':res.data.model[i].AreaName,'value':res.data.model[i].NowMulArea});
                            self.MapIntoMulAreaData.push({'name':res.data.model[i].AreaName,'value':res.data.model[i].IntoMulArea});
                            self.MapHighMulAreaData.push({'name':res.data.model[i].AreaName,'value':res.data.model[i].HighMulArea});
                            self.MapMidMulAreaData.push({'name':res.data.model[i].AreaName,'value':res.data.model[i].MidMulArea});
                            self.MapLowMulAreaData.push({'name':res.data.model[i].AreaName,'value':res.data.model[i].LowMulArea});
                            self.MapNewlyMulAreaData.push({'name':res.data.model[i].AreaName,'value':res.data.model[i].NewlyMulArea});
                            self.MapNotUseMulAreaData.push({'name':res.data.model[i].AreaName,'value':res.data.model[i].NotUseMulArea});
                            self.MapDestroyMulAreaData.push({'name':res.data.model[i].AreaName,'value':res.data.model[i].DestroyMulArea});
                        }
                        self.barList.push(self.NowMulAreaData,self.IntoMulAreaData,self.HighMulAreaData,self.MidMulAreaData,self.LowMulAreaData,self.NewlyMulAreaData);
                        self.barList.push(self.NotUseMulAreaData,self.DestroyMulAreaData);
                        self.mapList.push(self.MapNowMulAreaData,self.MapIntoMulAreaData,self.MapHighMulAreaData,self.MapMidMulAreaData,self.MapLowMulAreaData,self.MapNewlyMulAreaData);
                        self.mapList.push(self.MapNotUseMulAreaData,self.MapDestroyMulAreaData);
                        self.showEcharts();
                }
                else {
                    self.$Modal.error({
                    title: '提示信息',
                    content: res.data.message
                    });
                }
            });
            if(self.searchModel.IsCity!=1){//包含县区统计信息
                self.mapType=user.AreaCode;
                self.$http.post('MulAreaStatist/PostStatsDetailList', self.searchModel).then(function (res) {
                    if (res.data.status === 1) {
                            self.datas=res.data.model;//列表赋值
                    }
                    else {
                        self.$Modal.error({
                        title: '提示信息',
                        content: res.data.message
                        });
                    }
                });
            }
            self.getStatsByTime();
        },
        getStatsByTime(){//获取时间趋势统计数据
            var self=this;
            self.listTime=[];
            self.XData=[];
            self.$http.post('MulAreaStatist/PostStatsTimeList', self.searchModel).then(function (res) {
                if(res.data.status===1)
                {
                    //按年份对数据进行归类
                    if(res.data.model.length>0)
                    {
                        var array = new Array();
                        array[0]=[];array[1]=[];array[2]=[];
                        array[3]=[];array[4]=[];array[5]=[];
                        array[6]=[];array[7]=[];
                        for(var i=0;i<res.data.model.length;i++)
                        { 
                            self.XData.push(res.data.model[i].FillYear)
                            array[0].push(res.data.model[i].NowMulArea==null||''?0:res.data.model[i].NowMulArea);
                            array[1].push(res.data.model[i].IntoMulArea==null||''?0:res.data.model[i].IntoMulArea);
                            array[2].push(res.data.model[i].HighMulArea==null||''?0:res.data.model[i].HighMulArea);
                            array[3].push(res.data.model[i].MidMulArea==null||''?0:res.data.model[i].MidMulArea);
                            array[4].push(res.data.model[i].LowMulArea==null||''?0:res.data.model[i].LowMulArea);
                            array[5].push(res.data.model[i].NewlyMulArea==null||''?0:res.data.model[i].NewlyMulArea);
                            array[6].push(res.data.model[i].NotUseMulArea==null||''?0:res.data.model[i].NotUseMulArea);
                            array[7].push(res.data.model[i].DestroyMulArea==null||''?0:res.data.model[i].DestroyMulArea); 
                        }
                       self.listTime.push(array[0],array[1],array[2],array[3],array[4],array[5],array[6],array[7]);
                       self.getTimeTrendStats();
                    }
                    else{
                        self.$Modal.warning({
                            title: '提示信息',
                            content: "时间趋势统计数据为空"
                        });
                    }
                }
                else if(res.data.status===0)
                {
                    self.$Modal.warning({
                        title: '提示信息',
                        content: res.data.message
                    });
                }
                else{
                    self.$Modal.error({
                        title: '提示信息',
                        content: res.data.message
                    });
                }
            });
        },
        getTimeTrendStats(){//展示时间趋势统计图
            //************************显示时间趋势图
            var self=this;
            var container=document.getElementById('divTime');
            var containerTable=document.getElementsByClassName('ivu-col ivu-col-span-4');
            // //用于使chart自适应高度和宽度,通过窗体高宽计算容器高宽
            var resizeContainer = function () {
                container.style.width = (window.innerWidth- containerTable[0].clientWidth-40)+'px';
                container.style.height = (window.innerHeight-240)+'px';
            };
            //设置容器高宽
            resizeContainer();
            var myDiv = myEcharts.init(container, 'shine');
            var TableName='表1——'+self.CurrentAreaName+'桑园面积历年统计图';
            var option = self.GetTimeOption(TableName,self.XData,self.echartsItem, self.listTime,'line');
            myDiv.setOption(option);
            window.onresize = function () {
                //重置容器高宽
                resizeContainer();
                myDiv.resize();
            };
        },
        //展示柱状图和地图代码
        showEcharts(){
            //************************显示柱状图
            var self=this;
            var containerBar=document.getElementById('divBar');
            var containerTable=document.getElementsByClassName('ivu-col ivu-col-span-4');
            // //用于使chart自适应高度和宽度,通过窗体高宽计算容器高宽
            var resizeContainerBar = function () {
                containerBar.style.width = (window.innerWidth- containerTable[0].clientWidth-40)+'px';
                containerBar.style.height = (window.innerHeight-240)+'px';
            };
            //设置容器高宽
            resizeContainerBar();
            var myBar = myEcharts.init(containerBar, 'shine');
            var BarName='表1——'+self.searchModel.FillInYear+self.CurrentAreaName+'桑园面积柱状统计图——单位:亩';
            var optionBar = self.GetBarOption(BarName,self.AreaData,self.echartsItem,self.barList,'bar');
            myBar.setOption(optionBar);
            //柱状图展示完
            //******************显示地图
            var containerMap=document.getElementById('divMap');
            var containerTable=document.getElementsByClassName('ivu-col ivu-col-span-4');
            // //用于使chart自适应高度和宽度,通过窗体高宽计算容器高宽
            var resizeContainerMap = function () {
                //containerTable[0].clientWidth 左侧菜单栏的宽度
                containerMap.style.width = (window.innerWidth- containerTable[0].clientWidth-40)+'px';
                containerMap.style.height = (window.innerHeight-240)+'px';
            };
            //geo数据完
            //设置容器高宽
            resizeContainerMap();
            var myMap = myEcharts.init(containerMap, 'shine');
            var MapName='表1——'+self.searchModel.FillInYear+self.CurrentAreaName+'桑园面积统计地区分布图——单位:亩';
            var optionMap = self.GetMapOption(MapName,self.GeoData,self.mapType,self.echartsItem,self.mapList);
            myMap.setOption(optionMap);
            //用于使chart自适应高度和宽度
            window.onresize = function () {
                //重置容器高宽
                resizeContainerBar();
                resizeContainerMap();
                myMap.resize();
                myBar.resize();
            };
        },
        AreaChange(){
            this.getStatsData();
        }

    },
    //创建Vue页面方法
    created: function () { 
        this.getStatsData();   //获取地区统计数据
    },
    watch: {
        //需要监听的在此处新增监听对象
    }
}
</script>
<style scoped src="../../styles/stats.css"></style>
